package io.github.echarts.option.style;

import io.github.echarts.option.abstracts.AbstractOption;

/**
 * 图形样式配置，用于配置图形元素的颜色、边框等样式。
 * 主要用于柱状图、散点图等图表类型的样式定义。
 */
public class ItemStyle extends AbstractOption {
    
    private static final long serialVersionUID = 1L;
    
    private String color;
    private String borderColor;
    private Integer borderWidth;
    private String borderType;
    private Double opacity;
    private Integer borderRadius;
    private String shadowColor;
    private Integer shadowBlur;
    private Integer shadowOffsetX;
    private Integer shadowOffsetY;
    
    /**
     * 创建一个默认的图形样式对象。
     */
    public ItemStyle() {
        // 默认构造函数
    }
    
    /**
     * 创建一个带颜色的图形样式对象。
     *
     * @param color 图形颜色
     */
    public ItemStyle(String color) {
        this.color = color;
    }
    
    /**
     * 获取图形颜色。
     *
     * @return 图形颜色
     */
    public String getColor() {
        return color;
    }
    
    /**
     * 设置图形颜色。
     *
     * @param color 图形颜色
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setColor(String color) {
        this.color = color;
        return this;
    }
    
    /**
     * 获取边框颜色。
     *
     * @return 边框颜色
     */
    public String getBorderColor() {
        return borderColor;
    }
    
    /**
     * 设置边框颜色。
     *
     * @param borderColor 边框颜色
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setBorderColor(String borderColor) {
        this.borderColor = borderColor;
        return this;
    }
    
    /**
     * 获取边框宽度。
     *
     * @return 边框宽度
     */
    public Integer getBorderWidth() {
        return borderWidth;
    }
    
    /**
     * 设置边框宽度。
     *
     * @param borderWidth 边框宽度
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setBorderWidth(Integer borderWidth) {
        this.borderWidth = borderWidth;
        return this;
    }
    
    /**
     * 获取边框类型。
     * 可选值：'solid', 'dashed', 'dotted'
     *
     * @return 边框类型
     */
    public String getBorderType() {
        return borderType;
    }
    
    /**
     * 设置边框类型。
     *
     * @param borderType 边框类型
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setBorderType(String borderType) {
        this.borderType = borderType;
        return this;
    }
    
    /**
     * 获取透明度。
     * 范围：0（完全透明）到1（完全不透明）
     *
     * @return 透明度
     */
    public Double getOpacity() {
        return opacity;
    }
    
    /**
     * 设置透明度。
     *
     * @param opacity 透明度
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setOpacity(Double opacity) {
        this.opacity = opacity;
        return this;
    }
    
    /**
     * 获取边框圆角半径。
     *
     * @return 边框圆角半径
     */
    public Integer getBorderRadius() {
        return borderRadius;
    }
    
    /**
     * 设置边框圆角半径。
     *
     * @param borderRadius 边框圆角半径
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setBorderRadius(Integer borderRadius) {
        this.borderRadius = borderRadius;
        return this;
    }
    
    /**
     * 获取阴影颜色。
     *
     * @return 阴影颜色
     */
    public String getShadowColor() {
        return shadowColor;
    }
    
    /**
     * 设置阴影颜色。
     *
     * @param shadowColor 阴影颜色
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setShadowColor(String shadowColor) {
        this.shadowColor = shadowColor;
        return this;
    }
    
    /**
     * 获取阴影模糊大小。
     *
     * @return 阴影模糊大小
     */
    public Integer getShadowBlur() {
        return shadowBlur;
    }
    
    /**
     * 设置阴影模糊大小。
     *
     * @param shadowBlur 阴影模糊大小
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setShadowBlur(Integer shadowBlur) {
        this.shadowBlur = shadowBlur;
        return this;
    }
    
    /**
     * 获取阴影水平偏移距离。
     *
     * @return 阴影水平偏移距离
     */
    public Integer getShadowOffsetX() {
        return shadowOffsetX;
    }
    
    /**
     * 设置阴影水平偏移距离。
     *
     * @param shadowOffsetX 阴影水平偏移距离
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setShadowOffsetX(Integer shadowOffsetX) {
        this.shadowOffsetX = shadowOffsetX;
        return this;
    }
    
    /**
     * 获取阴影垂直偏移距离。
     *
     * @return 阴影垂直偏移距离
     */
    public Integer getShadowOffsetY() {
        return shadowOffsetY;
    }
    
    /**
     * 设置阴影垂直偏移距离。
     *
     * @param shadowOffsetY 阴影垂直偏移距离
     * @return 当前对象，用于链式调用
     */
    public ItemStyle setShadowOffsetY(Integer shadowOffsetY) {
        this.shadowOffsetY = shadowOffsetY;
        return this;
    }
} 